#ifndef ONLINE_JUDGE
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <cstring>

using namespace std;

extern void resolverDesdeEntrada( istream &, ostream & );

class Archivos {
	public:
		Archivos( const char *progname ) {
			int len = strlen( progname );
			
			mEntrada = 0;
			mSalida = 0;
			
			if ( len >= 3 ) {
				if ( !strncmp( progname + len - 3, "ej1", 3 ) ) {
					mEntrada = "e1.txt";
					mSalida = "s1.txt";
				} else if ( !strncmp( progname + len - 3, "ej2", 3 ) ) {
					mEntrada = "e2.txt";
					mSalida = "s2.txt";
				}
			}
		}
		
		const char *entrada() const { return mEntrada; }
		const char *salida() const { return mSalida; }
	
	private:
		const char *mEntrada, *mSalida;
};

int main( int argc, char **argv ) {
	Archivos arch( argv[0] );
	
	ifstream entrada( arch.entrada() );
	if ( !entrada.is_open() ) {
		cerr << "No se puede abrir el archivo de entrada." << endl;
		return -1;
	}

	ofstream salida( arch.salida() );
	if ( !salida.is_open() ) {
		cerr << "No se puede abrir el archivo de salida." << endl;
		return -1;
	}
	
	resolverDesdeEntrada( entrada, salida );
	return 0;
}
#endif // ONLINE_JUDGE
